/*
 * AtivarSAT.cpp
 *
 * @author Bematech S.A.
 */

#include "bilbao/protocol/serial/command/AtivarSAT.h"

namespace bilbao
{
	namespace protocol
	{
		namespace serial
		{
			namespace command
			{
				//--------------------------------------------------------------------------------
				// Construtor e destrutor
				//--------------------------------------------------------------------------------
				AtivarSAT::AtivarSAT( const String& subComando, const String& codigoDeAtivacao,
						const String& cnpj, const String& cUF )
					: ASerialCommand( ATIVAR_SAT, codigoDeAtivacao ), _cnpj( cnpj )
				{
					int x;
					std::istringstream ss1( subComando );

					if ( ss1 >> x )
					{
						if ( x == 0 )
							_subComando = AC_SAT;
						else if ( x == 1 )
							_subComando = ICP_BRASIL;
					}

					std::istringstream ss2( cUF );

					if ( ss2 >> x )
					{
						if ( x == 12 )
							_cUF = AC;
						else if ( x == 27 )
							_cUF = AL; // Alagoas
						else if ( x == 16 )
							_cUF = AP; // Amapá
						else if ( x == 13 )
							_cUF = AM; // Amazonas
						else if ( x == 29 )
							_cUF = BA; // Bahia
						else if ( x == 23 )
							_cUF = CE; // Ceará
						else if ( x == 53 )
							_cUF = DF; // Distrito Federal
						else if ( x == 32 )
							_cUF = ES; // Espírito Santo
						else if ( x == 52 )
							_cUF = GO; // Goiás
						else if ( x == 21 )
							_cUF = MA; // Maranhão
						else if ( x == 51 )
							_cUF = MT; // Mato Grosso
						else if ( x == 50 )
							_cUF = MS; // Mato Grosso do Sul
						else if ( x == 31 )
							_cUF = MG; // Minas Gerais
						else if ( x == 15 )
							_cUF = PA; // Pará
						else if ( x == 25 )
							_cUF = PB; // Paraíba
						else if ( x == 41 )
							_cUF = PR; // Paraná
						else if ( x == 26 )
							_cUF = PE; // Pernambuco
						else if ( x == 22 )
							_cUF = PI; // Piauí
						else if ( x == 14 )
							_cUF = RR; // Roraima
						else if ( x == 11 )
							_cUF = RO; // Rondônia
						else if ( x == 33 )
							_cUF = RJ; // Rio de Janeiro
						else if ( x == 24 )
							_cUF = RN; // Rio Grande do Norte
						else if ( x == 43 )
							_cUF = RS; // Rio Grande do Sul
						else if ( x == 42 )
							_cUF = SC; // Santa Catarina
						else if ( x == 35 )
							_cUF = SP; // São Paulo
						else if ( x == 28 )
							_cUF = SE; // Sergipe
						else if ( x == 17 )
							_cUF = TO; // Tocantins
					}
				}
				//--------------------------------------------------------------------------------
				AtivarSAT::~AtivarSAT( void )
				{
					// Do nothing
				}
				//--------------------------------------------------------------------------------

			}// namespace command
		} // namespace serial
	} // namespace protocol
} // namespace bilbao
